#pragma once
#include "../Utilities/utilities.h"

class Shaders 
{
public:
	GLuint program, vertexShader, fragmentShader;
	int id;
	char fileVS[260];
	char fileFS[260];
	int * m_states;
	int m_numState;
	GLint positionAttribute,a_normal,a_binorm,a_tgt,uv_posAttribute;//in vertex

	GLint  u_texture;
	GLint  u_texture0;
	GLint  u_texture1;
	GLint  u_texture2;
	GLint colorAttribute;
	GLint matrix;
	GLint WVPMatrixUniform;
	GLint u_timer;
	
	GLint Camera_pos;
	//source light
	GLint u_light_constantAttenuation, u_light_linearAttenuation, u_light_quadraticAttenuation;
	GLint u_light_pos0;
	GLint u_light_diffuse0;
	GLint u_light_ambient0;		
	GLint u_specularl0;	
	
	GLint u_light_pos1;
	GLint u_light_diffuse1;
	GLint u_light_ambient1;		
	GLint u_specularl1;	




	// Material
	GLint u_material_shininess, u_material_specular;


	int Init(char * fileVertexShader, char * fileFragmentShader);
	~Shaders();
	void cleanUp();
};